const PORT = 8888; //访问端口号8080   //端口号最好为6000以上
var http = require('http'); //引入http模块
var fs = require('fs'); //引入fs模块
var url = require('url');//引入url模块
var path = require('path');//引入path模块


/*
 * send interval in millis
 */
var sendInterval = 1000;
 
function sendServerSendEvent(req, res) {
    res.writeHead(200, {
        'Content-Type' : 'text/event-stream',
        'Cache-Control' : 'no-cache',
        'Connection' : 'keep-alive'
    });
    
    var sseId = (new Date()).toLocaleTimeString();
    
    setInterval(function() {
        writeServerSendEvent(res, sseId, (new Date()).toLocaleTimeString());
    }, sendInterval);
    
    writeServerSendEvent(res, sseId, (new Date()).toLocaleTimeString());
}
 
function writeServerSendEvent(res, sseId, data) {
    console.error('123123123123123123');
    // res.write('id: ' + sseId + '\n');
    // res.write('event: myTest \n\n');
    res.write(`event: myTest\n id: myTest \nretry: 4000 \ndata: ${data}\n\n`);
    // event: myTest \n
    // res.write(
    //     `data: 消息内容2  ${data}\n\n`
    // );
}
// req : 从浏览器带来的请求信息
// res : 从服务器返回给浏览器的信息
var server = http.createServer(function(req,res){
     //客户端输入的url，例如如果输入localhost:8888/index.html，那么这里的url == /index.html 
     //url.parse()方法将一个URL字符串转换成对象并返回，通过pathname来访问此url的地址。
    if (req.headers.accept && req.headers.accept == 'text/event-stream') {
        if (req.url == '/talk') {
            sendServerSendEvent(req, res);
        } else {
            res.writeHead(404);
            res.end();
        }
    } else {
        res.writeHead(404,{
            'content-type':'text/plain;charset="utf-8"'
        });
        res.write('404,页面不在');
        res.end();
    }
    if (req.url !== '/talk') {
        fs.readFile('./index.json',function(err,data){
            /*
            realPath为文件路径
            第二个参数为回调函数
                回调函数的一参为读取错误返回的信息，返回空就没有错误
                二参为读取成功返回的文本内容
            */
           console.error(data);
            if(err){
                //未找到文件
                res.writeHead(404,{
                    'content-type':'text/plain;charset="utf-8"'
                });
                res.write('404,页面不在');
                res.end();
            }else{
                //成功读取文件
                res.writeHead(200,{
                    'content-type':'text/html;charset="utf-8"'
                });
                res.write(data);
                res.end();
            }
        });
    }
    
});
server.listen(PORT); //监听端口
console.log('服务成功开启');

// wesocket 服务
var WebSocketServer = require('ws').Server,
wss = new WebSocketServer({ port: 8181 });//服务端口8181
wss.on('connection', function (ws, req) {
    console.error('连接成功了哦！');
    ws.on('message', function (message) {
        console.log('我是服务器，接到了前端信息：', message);
        ws.send(JSON.stringify({
            receive: message,
            response: `这个我回的消息：现在的时间是${new Date()}`
        }));
    });

    setInterval(() => {
        ws.send(JSON.stringify({
            response: `这是我主动推给的消息${new Date()}`
        }));
    }, 2000);
});